32x64 の LED マトリクス
SRYLED というストアで売っている。日本で買うよりも圧倒的に安い
ストア https://ja.aliexpress.com/store/1848738
買ったやつ https://ja.aliexpress.com/item/32721228637.html
1356 円 as of 2023-04-12
国内で売っている同等品
https://www.akiba-led.jp/product/1182
6800円
Reddit で評判が良かったので買ってみた
3/27 に注文、4/5に到着
データシートとかは無いので調べつつメモ
電源は VH コネクタというやつの 4 ピン
これ https://akizukidenshi.com/catalog/g/gC-12813/
とはいえ電源ケーブルはついてくる。やたら長いので鬱陶しく、↑買って自作が良さそう
データは 2.54mm ピッチの 2 * 8 ピン
3ピンはGNDなので、信号線は13本
HUB75 という規格らしい
まあただのシフトレジスタという感じ
2バンク(バンクという呼称でいいのか?)64ビット * 3 色をシフトレジスタで送る
どの行に出すかを4ビット(0 - 15)で送る
ダイナミック点灯で任意のパターンを表示できる
mbed の GPIO で制御
→できた
8階調で PWM 調光しても問題なかった
↓の写真だと微妙だけど、肉眼では全く気にならない
https://gyazo.com/bdb3af67a11dcb8081abe2d32fc438d7
USB から制御したい。MCP2221A(USB - I2C インターフェース)と MCP23017(I2C I/O エクスパンダ)を使って USB 制御をしてみる。
まずはそもそも I2C で制御可能なのか試す
→全くスピードが足りなかった
MCP23017 は 1.7MHz までの対応を謳っているが、実際すこしずつ早くしていくと 1.5MHz くらいからノイズが酷くて使いものにならなかった。これはブレッドボードだから悪い、というのも大きいと思う
ダイナミック点灯の周波数が足りず、めちゃくちゃフリッカーが発生してしまった
PWM による調光とかまず不可能
代案を考える
MCP23S17
MCP23017 の SPI 版。10MHz まで対応しているらしいので、少なくとも 7MHz くらいまでは押せるだろう
売りきれ…
Digi-Key か?めんどくさいぜ
MCP2221A は SPI インターフェースはない。MCP2210 というのが良さげだが、やはり売ってない
秋月にリクエストしてみた
75HC595
シンプルなシフトレジスタ。8-bit しかないが、連結する機能がある
どのくらい速度が出るのかわからないが、単純なロジックゲートだし速そう
SPI で操作できるらしい?SPI のプロトコルよくわかってないが、なるほど
https://www.chibiegg.net/elec/avr-elec/74hc595_spi.htm
何らかのマイコンを挟む
画素データを送ると適切な信号を発生してくれるやつを作って、ホストと USB なり何なりで通信する
要は GPU ということ
ホストとの通信スピードは 3-bit * 64 * 32 * 30fps = 184320 bps ~= 184Kbpsくらいあればよい?
各色8階調くらいで調光したら 1474560 bps ~= 1.5Mbps くらい?
ちがう、8倍じゃなくて log2(8) 倍ですよ
これやるなら慣れ親しんだ mbed 使いたい気がするが、現代なら RasPi Pico とかも良いでしょう。安いし。
間に Raspberry Pi Pico を挟んでドライバとして使うことにした
配線メモ
table:配線メモ
Hub75 Pico
OE GP2
CLK GP3
LAT GP4
A GP6
B GP7
C GP8
D GP9
R1 GP10
G1 GP11
B1 GP12
R2 GP13
G2 GP14
B2 GP15
とりあえず任意の画像をダイナミック点灯できるようになった
https://gyazo.com/de66952cda8805419597199ff71a1294
GPIO が速すぎて、パネル側のシフトレジスタがクロックの立ち上がりを読み落とすことがあった。1マイクロ秒のスリープを入れることで解決した
code:cpp
gpio_put(Hub75::CLK, 1);
sleep_us(1);
gpio_put(Hub75::CLK, 0);
書き込みが面倒なので、タクトスイッチを RUN と GND の間に挟むことでリセットボタンにすることができる
BOOTSELボタンを押す→リセットボタンを押す→リセットボタンを離す→BOOTSELボタンを離す で書き込みモードに入ることができる
これでもまあまあめんどいが、USB 抜き差しよりは楽
USB HID のカスタムレポートとして画素値を送ることを考える。
フォーマットを考えよう
まあまずは輝度コントロールとか無しで 1 ピクセル 3 ビット(RGB)として送るか
#電子工作